import { getCloudData } from '../../utils/handleCloud';
const utils = require('../../utils/util');
const app = getApp();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    hide: app.globalData.hide,
    top: 20,
    swiperHeight: 0,
    mySiwper: [
      "https://s11.ax1x.com/2024/02/26/pFacMXF.png",
      "https://s11.ax1x.com/2024/02/26/pFacK6U.png",
    ],
    classifyIdx: 0,
    menuClassify: [],
    classify: [],
    menuScrollId: 0,
    menu: [],
    cart: [],
    cartNum: 0,
    heartbeat: 0,
    showCartCon: false,
    listheight: 0,
    fat_cont: ["吃货最高境界，眼见为食。",
      "只要活着，就一定能遇见好吃的。",
      "人生在世，不该愧对\"吃货\"二字。",
      "人是铁，饭是钢，吃货总比痴货好。",
      "我只是个思想合格，胃不争气的吃货。",
      "除了吃美食、还有比这跟美好的事么。",
      "当吃货挺好的，吃着吃着什么都忘了。",
      "我发现了，作为吃货，要么饿，要么撑！",
      "就算生活过得再怎么不堪，我要努力吃下去。",
      "对于吃货而言，没有什么事情是碗救不了的…",
      "我能吃不代表我是吃货，只能说说明我好养。",
      "成长就是从去哪家饭店吃变成了去哪个城市吃。",
      "情若能自控，我一定会按捺住我那颗吃货的心。",
      "在吃货的这条不归路上，人类，从来都不孤单！",
      "上帝给予我吃货的属性，却没有给我土豪的身份。",
      "谁说吃货除了吃就什么都不会了，她们还知道饿。",
      "幸福就是一个吃货有着很棒的胃还有吃不胖的身材。",
      "对于吃货来说，吃与不吃和饱了没饱是没有关系的。",
      "我只是不想让嘴巴寂寞，我是吃货，我为自己代言？",
      "吃货的思路是好吃你就多吃点，不好吃多少也要吃点。",
      "一天只吃三餐就像是虐待自己，四餐正常，五餐满足。",
      "真正的吃货敢于直面粗壮的大腿，敢于挑战隆起的小腹。",
      "世界上有两个我，一个吃货的我，一个真心想减肥的我。",
      "就算宇宙大爆炸，依旧不能阻止本人吃到撑，吃到胃痛！",
      "吃是为了生存，所以吃货只是求生欲望特别强烈的人而已。",
      "据说这就是吃货狂吃时的状态：嘴里很享受，心里很想瘦。",
      "每一个吃货，都在用自己的肉体挽救经济危机，可歌可泣！",
      "作为一个吃货。吃零食不是因为饿了、而是因为嘴巴寂寞了！",
      "提起一座城市。只想到那儿的美食。这就是吃货旅行的意义。",
      "我是个有原则的吃货，奇怪的人给我的还得经过消毒才吃嘞。",
      "对于吃货来说，每天有好吃的东西，生活不会单调到哪儿去。",
      "吃货其实很伟大，TA背负着要胖死的危险，仍然马不停蹄的去吃。",
      "吃货怎么了，吃货只会想着吃，不会想着勾心斗角，吃货不好吗？",
      "我们都是吃货。闺蜜，等俺有钱了。我要带你吃遍所有的美食。",
      "在一个吃货的世界里是没有什么热量不热量的，只有好吃不好吃。",
      "吃，是我体会人生光辉的源动力。风雨兼程，赴汤蹈火，在所不惜。",
      "吃，我所欲也；瘦，亦亦我所欲也……两者不可得兼，我勒个去也。",
      "爱上你的那天不是因为你有多好，而是因为那天阳光正好，吃得很饱。",
      "每天叫醒你的不是梦想，也不是尿急，而是不安分的灵魂，因为饿了。",
      "两个人能否长久在一起，三观很重要，但对于吃货来说，三餐更重要。",
      "吃货的人生就像一列火车，总结起来就是逛——吃，逛——吃，逛——吃。",
      "最让我感动的三句话：给你带好吃的，请你去吃好吃的，带你去吃好吃的。",
      "不要相信一个吃货说她要减肥，她说这话的时候，一定是她刚刚吃饱的时候。",
      "向吃货表白时的最佳歌曲：我愿意喂你，我愿意喂你，我愿意喂你~被放逐天际。",
      "我宁愿当一个只会吃的吃货，也不要当一个明知道他不爱我却还傻傻爱着他的痴货。",
      "美食一上桌，脑子里发布的第一指令是“吃”而不是“拍照”，才能称为称职的吃货！",
      "有两样东西别人抢不走，一是你吃进肚子里的食物，另一个是你藏在心里的梦想。所以我要做个有梦想的吃货。",
      "吃货都是、开心的时候，吃好吃的庆祝一下；难过的时候，吃好吃的安慰一下；无聊的时候，吃好吃的消遣一下！",
      "不开心睡一觉，就让它过去吧。伤心还好，伤胃就不好了。",
      "吃货，是嘴里的享受，心里的想瘦。",
      "\"为什么世界上有这么多好吃的东西？\"\"不是好吃的东西很多，而是对你来说什么都好吃。\"",
      "瘦子吃给胖子看，是一件很残酷的事儿。",
      "我一不高兴就喜欢吃东西，一吃东西就发胖，一发胖我就很不高兴。",
      "能做到望梅止渴，画饼充饥，那是吃货的一种很高的境界。",
      "身材苗条的吃货是吃货中的精品。",
      "我有一个梦想，梦想有一天，全世界所有的饭店都会免费……",
      "吃着碗里的，看着锅里的这很正常。吃着锅里的，看着盆里的那才叫强。",
      "你不要误会，我不是在吃，只是在去吃的路上。",
      "爱上你的那天不是因为你有多好，而是因为那天阳光正好，吃得很饱。",
      "空有一颗想减肥的心，偏偏生了一条吃货的命。"
    ]
  },

  getMenuData(gather) {
    const that = this;
    const { hide } = that.data;
    getCloudData('menu', { gather })
      .then(res => {
        let data = res[0].list;
        that.setData({
          [gather]: data,
          classifyIdx: 0,
          menuClassify: data
        }, () => {
          if (!hide) {
            that.getItemHeight();
          }
        })
      })
  },

  onPageScroll(e) {
    const { top } = this.data;
    const scrollTop = e.scrollTop;
    if (scrollTop >= top) {
      wx.pageScrollTo({
        selector: "#main",
      });
    }
  },

  onMenuScroll(e) {
    const { scrollTop } = e.detail;
    const { listheight } = this.data;

    wx.pageScrollTo({
      selector: "#main",
    });

    for (var i = 0; i < listheight.length; i++) {
      if (scrollTop < listheight[i]) {
        this.setData({ classifyIdx: i });
        break;
      };
    };
    return;

    var index
    listheight.forEach((item, i) => {
      if (scrollTop >= 0 && scrollTop <= listheight[0] && i == 0) {
        // console.log('第1楼');
        return index = 0
      }
      if (scrollTop > listheight[i] && scrollTop <= listheight[i + 1]) {
        // console.log(`第${i + 2}楼`);
        return index = i + 1
      }
      if (scrollTop > listheight[listheight.length - 1]) {
        // console.log('最后一楼');
        return index = listheight.length - 1
      }
    })

    this.setData({
      classifyIdx: index,
    });
  },

  getItemHeight() {
    var list_h = 0;
    var query = wx.createSelectorQuery();
    query
      .select("#menu-item")
      .boundingClientRect((res) => {
        list_h = res.height;
        this.getFloor(list_h);
      })
      .exec();
  },

  getFloor(list_h) {
    const that = this;
    const { menuClassify } = that.data;
    var height_total = 0; //累计的高
    var listheight = []; //定义空数组加入每一个数组
    for (var i in menuClassify) {
      var goods_tit_h = 30 + 10; // 标题高度
      var goods_h = Number(menuClassify[i].list.length * (list_h + 10)); //商品的高度

      var height = goods_tit_h + goods_h - 50;
      // var height = parseInt(height * 0.93); //大概就是93%同滚轴差不多.
      height_total += height;
      if (menuClassify[i].list.length != 0) {
        listheight.push(height_total);
      }
    }
    // console.log(listheight);
    that.setData({ listheight });
  },

  clickClassify(e) {
    const { index } = e.currentTarget.dataset;
    this.setData({
      classifyIdx: index,
      menuScrollId: index
    })

    wx.pageScrollTo({
      selector: "#main",
    });
  },

  checkImg(e) {
    const { img } = e.currentTarget.dataset;
    wx.previewImage({
      urls: [img],
    })
  },

  addOrder(e) {
    const { img } = e.currentTarget.dataset;
    let { menuClassify, cart, cartNum, heartbeat } = this.data;
    cartNum += 1;
    menuClassify.forEach(item => {
      item.list.forEach(i => {
        if (i.img == img) {
          i.num = 1;
          heartbeat += i.price;
          cart.push(i);
          return;
        }
      })
    })

    this.setData({ menuClassify, cart, cartNum, heartbeat });
  },

  orderMinus(e) {
    const { img } = e.currentTarget.dataset;
    let { menuClassify, cart, cartNum, heartbeat } = this.data;
    cartNum -= 1;
    cart.forEach(i => {
      if (i.img == img) {
        i.num -= 1;
        heartbeat -= i.price;
        if (i.num == 0) {
          cart = cart.filter(item => item.img != img);

          this.setData({
            showCartCon: false,
            heartbeat: 0
          })
        }
      }
    });

    this.setData({
      menuClassify,
      cart,
      cartNum,
      heartbeat
    });
  },

  orderAdd(e) {
    const { img } = e.currentTarget.dataset;
    let { menuClassify, cart, cartNum, heartbeat } = this.data;

    cartNum += 1
    cart.forEach(i => {
      if (i.img == img) {
        i.num += 1;
        heartbeat += i.price;
        // if (i.num >= 11) {
        //   wx.showToast({
        //     title: '添加上限',
        //     icon: 'none'
        //   })
        // }
      }
    });
    this.setData({
      menuClassify,
      cart,
      cartNum,
      heartbeat
    });
  },

  handleCartCon() {
    let { showCartCon } = this.data;
    this.setData({ showCartCon: !showCartCon })
  },

  clearCart() {
    let { menuClassify } = this.data;
    wx.showModal({
      title: '提示',
      content: '是否清空已点菜单',
      complete: (res) => {
        if (res.cancel) { }
        if (res.confirm) {
          menuClassify.forEach(item => {
            item.list.forEach(i => {
              i.num = 0
            })
          })
          this.setData({
            cart: [],
            menuClassify,
            cartNum: 0,
            heartbeat: 0,
            showCartCon: false,
          })
        }
      }
    })
  },

  createOrder() {
    wx.navigateTo({
      url: '/pages/order/create/create',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.createSelectorQuery()
      .selectAll(".swiper-img")
      .boundingClientRect((res) => {
        const swiperHeight = res[0].height;
        this.setData({ swiperHeight });
      })
      .exec();

    this.getMenuData('classify');
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() { },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() { },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() { },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() { },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getMenuData('classify');
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() { },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() { },
});
